package com.briup.day08;

import java.util.Arrays;

/**
 * @author ThinkBook
 */
public class Test01_Case {
    //遍历数组
    public static void outArray(int[] arr) {
        for(int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();
    }

    /*
        1 2 3 4 5
        第n个 倒数第n个 进行交换
         0  1
         4  3
         i  len-1-i
         循环的值[0,len/2)

        1 2 3 4 5 6
        0   1   2   i
        5   4   3   len-1-i
        循环[0,len/2)
     */
    public static void reverse(int[] arr) {
        int len = arr.length;
        for(int i = 0; i < len/2; i++) {
            arr[i] = arr[i] ^ arr[len-1-i];
            arr[len-1-i] = arr[i] ^ arr[len-1-i];
            arr[i] = arr[i] ^ arr[len-1-i];
        }
    }

    //冒泡排序
    public static void bubbleSort(int[] arr) {
        int len = arr.length;
        for(int i = 1; i < len; i++) {
            //如何实现 8|7 移动无序序列最后位置
            for(int j = 0; j < len-i; j++) {
                //比较相邻的两个元素并交换值：大的放后面，小的放前面
                if(arr[j] > arr[j+1]) {
                    arr[j] = arr[j] ^ arr[j+1];
                    arr[j+1] = arr[j] ^ arr[j+1];
                    arr[j] = arr[j] ^ arr[j+1];
                }
            }
            System.out.println("第"+i+"次排序: ");
            outArray(arr);
        }
    }
    public static void main(String[] args) {
        int[] array = {5,7,2,3,8,1};
        // 5 2 3 7 1 8
        // 2 3 5 1 7 8
        // 2 3 1 5 7 8
        // 2 1 3 5 7 8
        // 1 2 3 5 7 8

        //交换
        //reverse(array);
        //输出
        //outArray(array);

        //调用冒泡排序
        bubbleSort(array);



        String str = Arrays.toString(array);
        System.out.println(str);
        int[] arr2 = Arrays.copyOf(array,7);
        System.out.println(Arrays.toString(arr2));
        System.out.println("array: " + array);
        System.out.println("arr2: " + arr2);

        int index = Arrays.binarySearch(array,7);
        System.out.println("7的索引:"+index);

    }
}
